//        008. 序列中的最大乘积
//        在下面 1000 位数中，连续四个数的最大乘积为 9∗9∗8∗9=5832:
//        73167176531330624919225119674426574742355349194934
//        96983520312774506326239578318016984801869478851843
//        85861560789112949495459501737958331952853208805511
//        12540698747158523863050715693290963295227443043557
//        66896648950445244523161731856403098711121722383113
//        62229893423380308135336276614282806444486645238749
//        30358907296290491560440772390713810515859307960866
//        70172427121883998797908792274921901699720888093776
//        65727333001053367881220235421809751254540594752243
//        52584907711670556013604839586446706324415722155397
//        53697817977846174064955149290862569321978468622482
//        83972241375657056057490261407972968652414535100474
//        82166370484403199890008895243450658541227588666881
//        16427171479924442928230863465674813919123162824586
//        17866458359124566529476545682848912883142607690042
//        24219022671055626321111109370544217506941658960408
//        07198403850962455444362981230987879927244284909188
//        84580156166097919133875499200524063689912560717606
//        05886116467109405077541002256983155200055935729725
//        71636269561882670428252483600823257530420752963450
//        寻找连续十三数的最大乘积，这个乘积是多少？
//        答案：23514624000

public class week008 {
    public static void run() {
        String s = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450";
        int len = s.length();
        int n = 13;
        long ans = 0;
        long curMul = 1;
        for (int i = 0, j = 0; i < len; ++i) {
            if (s.charAt(i) == '0') {
                while (i < len && s.charAt(i) == '0') ++i;
                if(i==len)break;
                j = i;
                curMul = s.charAt(i) - '0';
            } else {
                curMul *= s.charAt(i) - '0';
                if (i - j + 1 == n) {
                    ans = Math.max(ans, curMul);
                    curMul /= s.charAt(j) - '0';
                    ++j;
                }
            }
        }
        System.out.println(ans);
    }

    public static void main(String[] args) {
        long startTime = System.nanoTime();
        run();
        System.out.println("程序运行时间：" + (System.nanoTime() - startTime) + "ns.");
    }
//    public static void main(String[] args) {
//        String s = "73167176531330624919225119674426574742355349194934" +
//                "96983520312774506326239578318016984801869478851843" +
//                "85861560789112949495459501737958331952853208805511" +
//                "12540698747158523863050715693290963295227443043557" +
//                "66896648950445244523161731856403098711121722383113" +
//                "62229893423380308135336276614282806444486645238749" +
//                "30358907296290491560440772390713810515859307960866" +
//                "70172427121883998797908792274921901699720888093776" +
//                "65727333001053367881220235421809751254540594752243" +
//                "52584907711670556013604839586446706324415722155397" +
//                "53697817977846174064955149290862569321978468622482" +
//                "83972241375657056057490261407972968652414535100474" +
//                "82166370484403199890008895243450658541227588666881" +
//                "16427171479924442928230863465674813919123162824586" +
//                "17866458359124566529476545682848912883142607690042" +
//                "24219022671055626321111109370544217506941658960408" +
//                "07198403850962455444362981230987879927244284909188" +
//                "84580156166097919133875499200524063689912560717606" +
//                "05886116467109405077541002256983155200055935729725" +
//                "71636269561882670428252483600823257530420752963450";
//        int n = 13;
//        int len = s.length();
//        if (n > len) {
//            System.out.println("ERROR");
//            return;
//        }
//        int t = 1, i = 0;//t记录个数,i为下标
//        while (i < len && s.charAt(i) == '0') ++i;
//        long cur = s.charAt(i++) - '0', ans = 0;
//        //遇见0不要乘，从0之后乘
//        while (i < len) {
//            if (s.charAt(i) == '0') {
//                while (++i < len && s.charAt(i) == '0') ;
//                if (i == len) break;
//                t = 1;
//                cur = s.charAt(i++) - '0';
//                continue;
//            }
//            cur *= s.charAt(i++) - '0';
//            //每满13个就褪去最前面那一个，使其保持2个
//            if (++t == n) {
//                ans = Math.max(ans, cur);
//                cur /= s.charAt(i - n) - '0';
//                --t;
//            }
//        }
//        System.out.println(ans);
//    }
}
